From 9e35725237cb98cde21dc6ab2dde9ce051a67289 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Thu, 23 Oct 2003 05:10:47 +0000 Subject: [PATCH] Convert GtkOptionMenu to GtkComboBox. Thu Oct 23 01:09:04 2003 Owen Taylor * gtk/gtkfilechooserdefault.c: Convert GtkOptionMenu to GtkComboBox. --- ChangeLog | 5 ++ ChangeLog.pre-2-10 | 5 ++ ChangeLog.pre-2-4 | 5 ++ ChangeLog.pre-2-6 | 5 ++ ChangeLog.pre-2-8 | 5 ++ gtk/gtkfilechooserdefault.c | 104 +++++++++++------------------------- 6 files changed, 57 insertions(+), 72 deletions(-) diff --git a/ChangeLog b/ChangeLog index d3893a4a55..2bac026d5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Oct 23 01:09:04 2003 Owen Taylor + + * gtk/gtkfilechooserdefault.c: Convert GtkOptionMenu to + GtkComboBox. + Wed Oct 22 23:20:04 2003 Owen Taylor * gtk/gtkfilechooser.[ch] gtk/gtkfilefilter.[ch] diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index d3893a4a55..2bac026d5a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Thu Oct 23 01:09:04 2003 Owen Taylor + + * gtk/gtkfilechooserdefault.c: Convert GtkOptionMenu to + GtkComboBox. + Wed Oct 22 23:20:04 2003 Owen Taylor * gtk/gtkfilechooser.[ch] gtk/gtkfilefilter.[ch] diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index d3893a4a55..2bac026d5a 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Thu Oct 23 01:09:04 2003 Owen Taylor + + * gtk/gtkfilechooserdefault.c: Convert GtkOptionMenu to + GtkComboBox. + Wed Oct 22 23:20:04 2003 Owen Taylor * gtk/gtkfilechooser.[ch] gtk/gtkfilefilter.[ch] diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index d3893a4a55..2bac026d5a 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Thu Oct 23 01:09:04 2003 Owen Taylor + + * gtk/gtkfilechooserdefault.c: Convert GtkOptionMenu to + GtkComboBox. + Wed Oct 22 23:20:04 2003 Owen Taylor * gtk/gtkfilechooser.[ch] gtk/gtkfilefilter.[ch] diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index d3893a4a55..2bac026d5a 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Thu Oct 23 01:09:04 2003 Owen Taylor + + * gtk/gtkfilechooserdefault.c: Convert GtkOptionMenu to + GtkComboBox. + Wed Oct 22 23:20:04 2003 Owen Taylor * gtk/gtkfilechooser.[ch] gtk/gtkfilefilter.[ch] diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index ddb517b62f..ff6f75608e 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -19,9 +19,11 @@ */ #include "gtkalignment.h" +#include "gtkbutton.h" #include "gtkcellrendererpixbuf.h" #include "gtkcellrendererseptext.h" #include "gtkcellrenderertext.h" +#include "gtkcombobox.h" #include "gtkentry.h" #include "gtkfilechooserdefault.h" #include "gtkfilechooserentry.h" @@ -35,9 +37,6 @@ #include "gtkimage.h" #include "gtklabel.h" #include "gtkmenuitem.h" -#undef GTK_DISABLE_DEPRECATED -#include "gtkoptionmenu.h" -#define GTK_DISABLE_DEPRECATED #include "gtkprivate.h" #include "gtkscrolledwindow.h" #include "gtkstock.h" @@ -93,7 +92,7 @@ struct _GtkFileChooserDefault GtkWidget *preview_frame; GtkWidget *filter_alignment; - GtkWidget *filter_option_menu; + GtkWidget *filter_combo; GtkWidget *tree_scrollwin; GtkWidget *tree; GtkWidget *shortcuts_scrollwin; @@ -184,7 +183,7 @@ static void set_current_filter (GtkFileChooserDefault *impl, GtkFileFilter *filter); static void check_preview_change (GtkFileChooserDefault *impl); -static void filter_option_menu_changed (GtkOptionMenu *option_menu, +static void filter_combo_changed (GtkComboBox *combo_box, GtkFileChooserDefault *impl); static void tree_selection_changed (GtkTreeSelection *tree_selection, GtkFileChooserDefault *impl); @@ -610,7 +609,7 @@ create_shortcuts_model (GtkFileChooserDefault *impl) gtk_tree_view_set_model (GTK_TREE_VIEW (impl->shortcuts_tree), GTK_TREE_MODEL (impl->shortcuts_model)); } -/* Creates the widgets for the filter option menu */ +/* Creates the widgets for the filter combo box */ static GtkWidget * create_filter (GtkFileChooserDefault *impl) { @@ -629,16 +628,14 @@ create_filter (GtkFileChooserDefault *impl) gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); - impl->filter_option_menu = gtk_option_menu_new (); - gtk_option_menu_set_menu (GTK_OPTION_MENU (impl->filter_option_menu), - gtk_menu_new ()); - gtk_box_pack_start (GTK_BOX (hbox), impl->filter_option_menu, FALSE, FALSE, 0); - gtk_widget_show (impl->filter_option_menu); + impl->filter_combo = gtk_combo_box_new_text (); + gtk_box_pack_start (GTK_BOX (hbox), impl->filter_combo, FALSE, FALSE, 0); + gtk_widget_show (impl->filter_combo); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), impl->filter_option_menu); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), impl->filter_combo); - g_signal_connect (impl->filter_option_menu, "changed", - G_CALLBACK (filter_option_menu_changed), impl); + g_signal_connect (impl->filter_combo, "changed", + G_CALLBACK (filter_combo_changed), impl); return impl->filter_alignment; } @@ -1249,7 +1246,7 @@ gtk_file_chooser_default_get_property (GObject *object, /* We override show-all since we have internal widgets that * shouldn't be shown when you call show_all(), like the filter - * option menu. + * combo box. */ static void gtk_file_chooser_default_show_all (GtkWidget *widget) @@ -1648,42 +1645,11 @@ gtk_file_chooser_default_get_file_system (GtkFileChooser *chooser) return impl->file_system; } -static GtkWidget * -find_filter_menu_item (GtkFileChooserDefault *impl, - GtkFileFilter *filter, - gint *index_return) -{ - GtkWidget *menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (impl->filter_option_menu)); - GList *children = gtk_container_get_children (GTK_CONTAINER (menu)); - GList *tmp_list; - int index = 0; - - if (index_return) - *index_return = -1; - - for (tmp_list = children; tmp_list; tmp_list = tmp_list->next) - { - if (g_object_get_data (tmp_list->data, "gtk-file-filter") == filter) - { - if (index_return) - *index_return = index; - return tmp_list->data; - } - index++; - } - - g_list_free (children); - - return NULL; -} - static void gtk_file_chooser_default_add_filter (GtkFileChooser *chooser, GtkFileFilter *filter) { GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser); - GtkWidget *menu; - GtkWidget *menu_item; const gchar *name; if (g_slist_find (impl->filters, filter)) @@ -1700,14 +1666,7 @@ gtk_file_chooser_default_add_filter (GtkFileChooser *chooser, if (!name) name = "Untitled filter"; /* Place-holder, doesn't need to be marked for translation */ - menu_item = gtk_menu_item_new_with_label (name); - g_object_set_data (G_OBJECT (menu_item), "gtk-file-filter", filter); - gtk_widget_show (menu_item); - - menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (impl->filter_option_menu)); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); - /* Option menus don't react to menu size changes properly */ - gtk_widget_size_request (menu, NULL); + gtk_combo_box_append_text (GTK_COMBO_BOX (impl->filter_combo), name); if (!g_slist_find (impl->filters, impl->current_filter)) set_current_filter (impl, filter); @@ -1720,10 +1679,13 @@ gtk_file_chooser_default_remove_filter (GtkFileChooser *chooser, GtkFileFilter *filter) { GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser); - GtkWidget *menu; - GtkWidget *menu_item; + GtkTreeModel *model; + GtkTreeIter iter; + gint filter_index; + + filter_index = g_slist_index (impl->filters, filter); - if (!g_slist_find (impl->filters, filter)) + if (index < 0) { g_warning ("gtk_file_chooser_remove_filter() called on filter not in list\n"); return; @@ -1739,13 +1701,11 @@ gtk_file_chooser_default_remove_filter (GtkFileChooser *chooser, set_current_filter (impl, NULL); } - menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (impl->filter_option_menu)); - menu_item = find_filter_menu_item (impl, filter, NULL); - g_assert (menu_item); - gtk_widget_destroy (menu_item); - /* Option menus don't react to menu size changes properly */ - gtk_widget_size_request (menu, NULL); - + /* Remove row from the combo box */ + model = gtk_combo_box_get_model (GTK_COMBO_BOX (impl->filter_combo)); + gtk_tree_model_iter_nth_child (model, &iter, NULL, filter_index); + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + g_object_unref (filter); if (!impl->filters) @@ -1875,12 +1835,12 @@ set_current_filter (GtkFileChooserDefault *impl, { if (impl->current_filter != filter) { - int menu_item_index; + int filter_index; /* If we have filters, new filter must be one of them */ - find_filter_menu_item (impl, filter, &menu_item_index); - if (impl->filters && menu_item_index < 0) + filter_index = g_slist_index (impl->filters, filter); + if (impl->filters && filter_index < 0) return; if (impl->current_filter) @@ -1893,8 +1853,8 @@ set_current_filter (GtkFileChooserDefault *impl, } if (impl->filters) - gtk_option_menu_set_history (GTK_OPTION_MENU (impl->filter_option_menu), - menu_item_index); + gtk_combo_box_set_active (GTK_COMBO_BOX (impl->filter_combo), + filter_index); install_list_model_filter (impl); @@ -1960,10 +1920,10 @@ open_and_close (GtkTreeView *tree_view, } static void -filter_option_menu_changed (GtkOptionMenu *option_menu, - GtkFileChooserDefault *impl) +filter_combo_changed (GtkComboBox *combo_box, + GtkFileChooserDefault *impl) { - gint new_index = gtk_option_menu_get_history (GTK_OPTION_MENU (option_menu)); + gint new_index = gtk_combo_box_get_active (combo_box); GtkFileFilter *new_filter = g_slist_nth_data (impl->filters, new_index); set_current_filter (impl, new_filter); -- 2.30.2